ここでは、portsをもっと簡単に、便利に管理出来るアプリケーションソフト
「portupgrade」の説明をしてみたいと思います。
portsを使用してインストールしていると、その内バージョンの管理が大変になってきます。
たまに新しいソフトを最新portsよりインストールした時、依存ファイルがportsで更新されていても
更新されないままインストールが終了してしまう場合もあります。
そして、使用しているportsが増えてくると、今使っているバージョンで
どれが最新でどれが古いのか、依存関係も含めて調べていると、
把握するのが非常に大変になってきます。
そんな時は、これです。
「portupgrade」は、portsを管理するためのアプリケーションです。
その他にも、portsのインストールを簡単にしてくれたり、
portsを管理する時に便利な機能が数多く付いています。
まず、最初にCVSUPを使用して、portsを最新状態に更新して置いてください。
最新にしたportsディレクトリから情報を得て確認するのだから、当然といえば当然なのですが。
なお、ここではある程度トラブルが予想される(汗)、
約30個ものportsをportupgradeを使用せずにインストールしてある、
緋色のマシンを例に上げて説明していきます。
CVSUPでportsの更新が終わったのであれば、インストール開始です。
Server# cd /usr/ports/sysutils/portupgrade/
Server# make install
Server# make clean
Server# rehash |
どうやら「Ruby」という言語で書かれているようであり、Rubyのインストールも始まります。
大人しく終了するのを待ちましょう。
さて、とりあえず適当にコマンドを実行して(ぉ)データーベースを再構築します。
Hiiro# portupgrade
---> Session started at: Fri, 08 Aug 2003
00:18:23 +0900
[Rebuilding the pkgdb <format:bdb1_btree>
in /var/db/pkg ... - 29 packages found(-0
+29) ............................. done]
Stale dependency: squirrelmail-1.4.1 -->
mod_php4-4.3.3.r2,1 -- manually run 'pkgdb -F' to fix, or specify -O to force.
---> Session ended at: Fri,
08 Aug 2003
00:18:43 +0900 (consumed 00:00:19) |
おやおや、データベース構築時に何か問題が出てきたようです。
「squireelmail」に依存している「mod_php4」がおかしいという事で、エラーが出てしまいました。
それもそのはず。「squirremail」インストール時に、
依存関係にあるはずの「mod_php4」をインストールしてなかったりします。
原因を思い出してみると、「lang/php4」をインストールした時点で、
「mod_php4」モジュールがインストールされたため、チェックミスでインストールされなかったようです。
とりあえずデータベースを修復して、おかしい依存関係の更新をします。
Server# pkgdb -F
---> Checking the package registry database
Duplicated origin: devel/libtool13 - libtool-1.3.4_4
libtool-1.3.5_1
Unregister any of them? [no]yes
Unregister libtool-1.3.4_4
keeping the
installed files intact? [no]yes
|
…その前に、libtoolで同じソフトの違うバージョンがインストールされているのが発見されました。
おそらく、portsを最新状態に更新するためのcvsupをインストール時に
依存関係でインストールされたのだと思います。
登録情報が削除されるだけなので、きちんとlibtoolは残ります。
---> Checking the package registry database
Stale dependency: squirrelmail-1.4.1 ->
mod_php4-4.3.3.r2,1 (www/mod_php4):
New dependency? (? to help): ?
[Enter] to skip, [Ctrl]+[D] to
delete, [.][Enter]
to abort, [Tab] to complete
|
とりあえず、一旦「Ctrl+C」で強制終了します。
対策1:[mod_php4]をインストールし直す。
Server# portinstall www/mod_php4 |
今後「portinstall」を使用すると、portsのインストールがすごく楽になります!
見ていただいての通り、これだけで良いのです。
もう、ディレクトリに移動して「make install」「make
clean」をしなくていいのです。
全部やってくれます。
ここで一つ注意を。make時に引数を渡す場合もあります。その場合、
Server# portinstall -m 'WITHOUT_CLI=yes'
www/mod_php |
と、「-m」オプションの後に続けて書くとちゃんと引数が渡されます。
対策2:依存関係を削除しておく。
New dependency? (? to help): ?
[Enter] to skip, [Ctrl]+[D] to delete, [.][Enter]
to abort, [Tab] to complete
|
ここで「CTRL+D」を押して、「y」です。
これで、今後依存関係が無かったことになるはずです。
次に、インストールされている全てのportsのバージョンを確認(比較)します。
Hiiro# portversion
apache =
bind9 =
cvsup-without-gui <
expat =
gettext =
gmake =
libiconv <
libtool <
pcre =
php4 > |
一部省略してしまいましたが「=」は同バージョンがインストールされている、
「<」が、現在のportsよりバージョンの低いものがインストールされている、
「>」は…何よそれ??……です。矛盾?が出てますね…。うーむ。
「>」はデータベースの矛盾が原因なので、
を実行すると解決してくれるようです。かなりの…っていうかやたらと時間がかかります。
おそらく数時間単位で終了を待たないと駄目だと思われます(汗)。
寝る前か用事の前に実行して放置しておくのが吉です。
しかし、「portversion」で「>」やチェックミスが出るのを消すために一度はやっておいたほうがいいようです。
理想はCVSUPを実行する度、やっておくといいらしいです、はい。
毎回こんなに長いのが嫌ならば、「-u(小文字)」で、データーベースのみ更新で良いかも知れません。
「pkgdb」は、インストール済みのports(packeageも)データベースチェック、
「portsdb」は、「/usr/ports」にあるすべてのデータベース(INDEX)を対象にしています。
「portinstall」を使わずにportsをインストールした場合、「pkgdb
-u(小文字)」を実行する必要があると思います。
合わせて覚えておいて下さい。
では、とりあえず一度、古いものをアップグレードしてみましょう。
ここでは「<」と表示されていた「cvs-without-gui」をアップグレードします。
Server# portupgrade cvsupit-without-gui |
これで自動的にバージョンアップを開始してくれます。
終了後に「portversion」を実行して、最新バージョン(=)になった事を確認しましょう。
バージョンの古いもの(「<」って表示されているソフトですね)をまとめて更新するには
で可能です(おお!)。便利ですねー覚えておいて損はないと思います。
そして、昔「make install」をやった時、「make
clean」を実行せずに放置してあったりした場合、
で全部を掃除してくれます。
で、distfilesに溜まっているソースを掃除してくれます。ありがたいです!!
しかしながら、このHPでは、このportupgradeを使用しないことを前提に
様々なソフトのインストール方法を書いています。
これを使用して「便利だ!」と思った方は、是非使用してみてください。
[一つ上に戻る] |